package ssm.mybatis.dynamic.mapper;

import ssm.mybatis.dynamic.pojo.Employee;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * description: 定义员工的数据操作方法
 */
public interface EmployeeMapper {

    // 根据员工的姓名和工资查询员工的信息(<where> <if>)
    List<Employee> query(@Param("name") String name, @Param("salary") Double salary);

    // trim 标签替换 where 标签的SQL实现(<trim>)
    List<Employee> queryTrim(@Param("name") String name, @Param("salary") Double salary);

    //根据员工id更新员工的数据，要求传入的name和salary不为null的才更新(<set>)
    int update(Employee employee);

    // trim 标签替换 set 标签的SQL实现(<trim>)
    int updateTrim(Employee employee);

    // 根据两个条件查询，如果姓名不为null使用姓名查询；如果姓名为null,薪水不为空就使用薪水查询；都为null查询全部
    // (choose/when/otherwise)
    List<Employee> queryChoose(@Param("name") String name, @Param("salary") Double salary);


    // 批量处理(foreach) 集合参数要添加 @Param("name") 指定映射的参数名

    //根据id的批量查询
    List<Employee> queryBatch(@Param("ids") List<Integer> ids);

    //根据id的批量删除
    int deleteBatch(@Param("ids") List<Integer> ids);

    int insertBatch(@Param("list") List<Employee> employeeList);

    int updateBatch(@Param("list") List<Employee> employeeList);

}
